import numpy as np import pandas as pd import plotly.express as px import matplotlib.pyplot as plt from wordcloud import WordCloud, STOPWORDS import matplotlib.pyplot as plt
gun_data = pd.read_csv("gun-violence-data.csv") gun_data.head()
| incident_id | date | state | city_or_county | address | n_killed | n_injured | incident_url | source_url | incident_url_fields_missing | ... | participant_age | participant_age_group | participant_gender | participant_name | participant_relationship | participant_status | participant_type | sources | state_house_district | state_senate_district | |
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| 0 | 461105 | 2013-01-01 | Pennsylvania | Mckeesport | 1506 Versailles Avenue and Coursin Street | 0 | 4 | http://www.gunviolencearchive.org/incident/461105 | http://www.post-gazette.com/local/south/2013/0... | False | ... | 0::20 | 0::Adult 18+||1::Adult 18+||2::Adult 18+||3::A... | 0::Male||1::Male||3::Male||4::Female | 0::Julian Sims | NaN | 0::Arrested||1::Injured||2::Injured||3::Injure... | 0::Victim||1::Victim||2::Victim||3::Victim||4:... | http://pittsburgh.cbslocal.com/2013/01/01/4-pe... | NaN | NaN |
| 1 | 460726 | 2013-01-01 | California | Hawthorne | 13500 block of Cerise Avenue | 1 | 3 | http://www.gunviolencearchive.org/incident/460726 | http://www.dailybulletin.com/article/zz/201301... | False | ... | 0::20 | 0::Adult 18+||1::Adult 18+||2::Adult 18+||3::A... | 0::Male | 0::Bernard Gillis | NaN | 0::Killed||1::Injured||2::Injured||3::Injured | 0::Victim||1::Victim||2::Victim||3::Victim||4:... | http://losangeles.cbslocal.com/2013/01/01/man-... | 62.0 | 35.0 |
| 2 | 478855 | 2013-01-01 | Ohio | Lorain | 1776 East 28th Street | 1 | 3 | http://www.gunviolencearchive.org/incident/478855 | http://chronicle.northcoastnow.com/2013/02/14/... | False | ... | 0::25||1::31||2::33||3::34||4::33 | 0::Adult 18+||1::Adult 18+||2::Adult 18+||3::A... | 0::Male||1::Male||2::Male||3::Male||4::Male | 0::Damien Bell||1::Desmen Noble||2::Herman Sea... | NaN | 0::Injured, Unharmed, Arrested||1::Unharmed, A... | 0::Subject-Suspect||1::Subject-Suspect||2::Vic... | http://www.morningjournal.com/general-news/201... | 56.0 | 13.0 |
| 3 | 478925 | 2013-01-05 | Colorado | Aurora | 16000 block of East Ithaca Place | 4 | 0 | http://www.gunviolencearchive.org/incident/478925 | http://www.dailydemocrat.com/20130106/aurora-s... | False | ... | 0::29||1::33||2::56||3::33 | 0::Adult 18+||1::Adult 18+||2::Adult 18+||3::A... | 0::Female||1::Male||2::Male||3::Male | 0::Stacie Philbrook||1::Christopher Ratliffe||... | NaN | 0::Killed||1::Killed||2::Killed||3::Killed | 0::Victim||1::Victim||2::Victim||3::Subject-Su... | http://denver.cbslocal.com/2013/01/06/officer-... | 40.0 | 28.0 |
| 4 | 478959 | 2013-01-07 | North Carolina | Greensboro | 307 Mourning Dove Terrace | 2 | 2 | http://www.gunviolencearchive.org/incident/478959 | http://www.journalnow.com/news/local/article_d... | False | ... | 0::18||1::46||2::14||3::47 | 0::Adult 18+||1::Adult 18+||2::Teen 12-17||3::... | 0::Female||1::Male||2::Male||3::Female | 0::Danielle Imani Jameison||1::Maurice Eugene ... | 3::Family | 0::Injured||1::Injured||2::Killed||3::Killed | 0::Victim||1::Victim||2::Victim||3::Subject-Su... | http://myfox8.com/2013/01/08/update-mother-sho... | 62.0 | 27.0 |
5 rows × 29 columns
columns_drop = ["incident_url", "source_url", "incident_url_fields_missing", "address", "participant_status", "sources", "latitude", "longitude", "state_house_district", "state_senate_district", "incident_id", "participant_name", "notes","location_description","congressional_district"] gun_data.drop(columns_drop, axis=1, inplace = True) #gun_data.dropna(inplace=True) gun_data.reset_index(drop=True, inplace=True)
gun_data.head(10)
| date | state | city_or_county | n_killed | n_injured | gun_stolen | gun_type | incident_characteristics | n_guns_involved | participant_age | participant_age_group | participant_gender | participant_relationship | participant_type | Adult | Teen | Child | Male | Female | state code | |
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| 0 | 2013-01-01 | Pennsylvania | Mckeesport | 0 | 4 | NaN | NaN | Shot - Wounded/Injured||Mass Shooting (4+ vict... | NaN | 0::20 | 0::Adult 18+||1::Adult 18+||2::Adult 18+||3::A... | 0::Male||1::Male||3::Male||4::Female | NaN | 0::Victim||1::Victim||2::Victim||3::Victim||4:... | 0 | 0 | 0 | 0 | 0 | PA |
| 1 | 2013-01-01 | California | Hawthorne | 1 | 3 | NaN | NaN | Shot - Wounded/Injured||Shot - Dead (murder, a... | NaN | 0::20 | 0::Adult 18+||1::Adult 18+||2::Adult 18+||3::A... | 0::Male | NaN | 0::Victim||1::Victim||2::Victim||3::Victim||4:... | 0 | 0 | 0 | 0 | 0 | CA |
| 2 | 2013-01-01 | Ohio | Lorain | 1 | 3 | 0::Unknown||1::Unknown | 0::Unknown||1::Unknown | Shot - Wounded/Injured||Shot - Dead (murder, a... | 2.0 | 0::25||1::31||2::33||3::34||4::33 | 0::Adult 18+||1::Adult 18+||2::Adult 18+||3::A... | 0::Male||1::Male||2::Male||3::Male||4::Male | NaN | 0::Subject-Suspect||1::Subject-Suspect||2::Vic... | 0 | 0 | 0 | 0 | 0 | OH |
| 3 | 2013-01-05 | Colorado | Aurora | 4 | 0 | NaN | NaN | Shot - Dead (murder, accidental, suicide)||Off... | NaN | 0::29||1::33||2::56||3::33 | 0::Adult 18+||1::Adult 18+||2::Adult 18+||3::A... | 0::Female||1::Male||2::Male||3::Male | NaN | 0::Victim||1::Victim||2::Victim||3::Subject-Su... | 0 | 0 | 0 | 0 | 0 | CO |
| 4 | 2013-01-07 | North Carolina | Greensboro | 2 | 2 | 0::Unknown||1::Unknown | 0::Handgun||1::Handgun | Shot - Wounded/Injured||Shot - Dead (murder, a... | 2.0 | 0::18||1::46||2::14||3::47 | 0::Adult 18+||1::Adult 18+||2::Teen 12-17||3::... | 0::Female||1::Male||2::Male||3::Female | 3::Family | 0::Victim||1::Victim||2::Victim||3::Subject-Su... | 0 | 0 | 0 | 0 | 0 | NC |
| 5 | 2013-01-07 | Oklahoma | Tulsa | 4 | 0 | NaN | NaN | Shot - Dead (murder, accidental, suicide)||Hom... | NaN | 0::23||1::23||2::33||3::55 | 0::Adult 18+||1::Adult 18+||2::Adult 18+||3::A... | 0::Female||1::Female||2::Female||3::Female||4:... | NaN | 0::Victim||1::Victim||2::Victim||3::Victim||4:... | 0 | 0 | 0 | 0 | 0 | OK |
| 6 | 2013-01-19 | New Mexico | Albuquerque | 5 | 0 | 0::Unknown||1::Unknown | 0::22 LR||1::223 Rem [AR-15] | Shot - Dead (murder, accidental, suicide)||Mas... | 2.0 | 0::51||1::40||2::9||3::5||4::2||5::15 | 0::Adult 18+||1::Adult 18+||2::Child 0-11||3::... | 0::Male||1::Female||2::Male||3::Female||4::Fem... | 5::Family | 0::Victim||1::Victim||2::Victim||3::Victim||4:... | 0 | 0 | 0 | 0 | 0 | NM |
| 7 | 2013-01-21 | Louisiana | New Orleans | 0 | 5 | NaN | NaN | Shot - Wounded/Injured||Drive-by (car to stree... | NaN | NaN | NaN | 0::Male||1::Male||2::Male||3::Male||4::Male | NaN | 0::Victim||1::Victim||2::Victim||3::Victim||4:... | 0 | 0 | 0 | 0 | 0 | LA |
| 8 | 2013-01-21 | California | Brentwood | 0 | 4 | NaN | NaN | Shot - Wounded/Injured||Drive-by (car to stree... | NaN | NaN | 0::Teen 12-17||1::Teen 12-17||2::Teen 12-17||4... | 0::Male||1::Male||2::Male||3::Male||4::Male | NaN | 0::Victim||1::Victim||2::Victim||3::Victim||4:... | 0 | 0 | 0 | 0 | 0 | CA |
| 9 | 2013-01-23 | Maryland | Baltimore | 1 | 6 | NaN | NaN | Shot - Wounded/Injured||Shot - Dead (murder, a... | NaN | 0::15 | 0::Teen 12-17||1::Adult 18+||2::Adult 18+||3::... | 0::Male | NaN | 0::Victim||1::Victim||2::Victim||3::Victim||4:... | 0 | 0 | 0 | 0 | 0 | MD |
words = ' '.join(i for i in gun_data['notes'].str.split(expand=True).stack().values.tolist()) stopwords = set(STOPWORDS) wordcloud = WordCloud(width = 800, height = 800, background_color ='white', stopwords = stopwords, min_font_size = 10).generate(words) # plot the WordCloud image plt.figure(figsize = (8, 8), facecolor = None) plt.imshow(wordcloud) plt.axis("off") plt.tight_layout(pad = 0) plt.show()
# initialize the columns gun_data['Adult'] = 0 gun_data['Teen'] = 0 gun_data['Child'] = 0 gun_data['Male'] = 0 gun_data['Female'] = 0 def age_Sorter(Row): temp = Row['participant_age_group'] if str(temp) == 'nan': return Row age_group = temp.split("||") if len(age_group) == 1: age_group = age_group[0].split("|") for age in age_group: a = age.split("::") if len(a) == 1: a = a[0].split(":") if a[1] == "Adult 18+": Row['Adult'] += 1 elif a[1] == "Teen 12-17": Row['Teen'] += 1 else: Row['Child'] += 1 for col in gun_data.columns: if col == 'participant_age_group': columns_drop = 'participant_age_group' return Row def gender_Sorter(Row): temp = Row['participant_gender'] if str(temp) == 'nan': return Row gender = temp.split("||") if len(gender) == 1: gender = gender[0].split("|") for gen in gender: g = gen.split("::") if len(g) == 1: g = g[0].split(":") if g[1] == "Male": Row['Male'] += 1 elif g[1] == "Female": Row['Female'] += 1 for col in gun_data.columns: if col == 'participant_gender': columns_drop = 'participant_gender' return Row gun_data = gun_data.apply(age_Sorter, axis = 1) gun_data = gun_data.apply(gender_Sorter, axis = 1) gun_data.head()
| state | city_or_county | n_killed | n_injured | gun_stolen | gun_type | incident_characteristics | n_guns_involved | participant_age | participant_age_group | participant_gender | participant_relationship | participant_type | Adult | Teen | Child | Male | Female | state code | |
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| date | |||||||||||||||||||
| 2013-01-01 | Pennsylvania | Mckeesport | 0 | 4 | NaN | NaN | Shot - Wounded/Injured||Mass Shooting (4+ vict... | NaN | 0::20 | 0::Adult 18+||1::Adult 18+||2::Adult 18+||3::A... | 0::Male||1::Male||3::Male||4::Female | NaN | 0::Victim||1::Victim||2::Victim||3::Victim||4:... | 5 | 0 | 0 | 3 | 1 | PA |
| 2013-01-01 | California | Hawthorne | 1 | 3 | NaN | NaN | Shot - Wounded/Injured||Shot - Dead (murder, a... | NaN | 0::20 | 0::Adult 18+||1::Adult 18+||2::Adult 18+||3::A... | 0::Male | NaN | 0::Victim||1::Victim||2::Victim||3::Victim||4:... | 4 | 0 | 0 | 1 | 0 | CA |
| 2013-01-01 | Ohio | Lorain | 1 | 3 | 0::Unknown||1::Unknown | 0::Unknown||1::Unknown | Shot - Wounded/Injured||Shot - Dead (murder, a... | 2.0 | 0::25||1::31||2::33||3::34||4::33 | 0::Adult 18+||1::Adult 18+||2::Adult 18+||3::A... | 0::Male||1::Male||2::Male||3::Male||4::Male | NaN | 0::Subject-Suspect||1::Subject-Suspect||2::Vic... | 5 | 0 | 0 | 5 | 0 | OH |
| 2013-01-05 | Colorado | Aurora | 4 | 0 | NaN | NaN | Shot - Dead (murder, accidental, suicide)||Off... | NaN | 0::29||1::33||2::56||3::33 | 0::Adult 18+||1::Adult 18+||2::Adult 18+||3::A... | 0::Female||1::Male||2::Male||3::Male | NaN | 0::Victim||1::Victim||2::Victim||3::Subject-Su... | 4 | 0 | 0 | 3 | 1 | CO |
| 2013-01-07 | North Carolina | Greensboro | 2 | 2 | 0::Unknown||1::Unknown | 0::Handgun||1::Handgun | Shot - Wounded/Injured||Shot - Dead (murder, a... | 2.0 | 0::18||1::46||2::14||3::47 | 0::Adult 18+||1::Adult 18+||2::Teen 12-17||3::... | 0::Female||1::Male||2::Male||3::Female | 3::Family | 0::Victim||1::Victim||2::Victim||3::Subject-Su... | 3 | 1 | 0 | 2 | 2 | NC |
Lcol = [] for col in gun_data.columns: if col == 'participant_gender': col = 'nan' else: Lcol.append(col)
Dylan's
# add state code to states violence_data = pd.read_csv("gun-violence-data.csv") states = { 'Alabama': 'AL', 'Alaska': 'AK', 'American Samoa': 'AS', 'Arizona': 'AZ', 'Arkansas': 'AR', 'California': 'CA', 'Colorado': 'CO', 'Connecticut': 'CT', 'Delaware': 'DE', 'District of Columbia': 'DC', 'Florida': 'FL', 'Georgia': 'GA', 'Guam': 'GU', 'Hawaii': 'HI', 'Idaho': 'ID', 'Illinois': 'IL', 'Indiana': 'IN', 'Iowa': 'IA', 'Kansas': 'KS', 'Kentucky': 'KY', 'Louisiana': 'LA', 'Maine': 'ME','Maryland': 'MD', 'Massachusetts': 'MA', 'Michigan': 'MI', 'Minnesota': 'MN', 'Mississippi': 'MS', 'Missouri': 'MO', 'Montana': 'MT', 'Nebraska': 'NE', 'Nevada': 'NV', 'New Hampshire': 'NH', 'New Jersey': 'NJ', 'New Mexico': 'NM', 'New York': 'NY', 'North Carolina': 'NC', 'North Dakota': 'ND', 'Northern Mariana Islands':'MP', 'Ohio': 'OH', 'Oklahoma': 'OK', 'Oregon': 'OR', 'Pennsylvania': 'PA', 'Puerto Rico': 'PR', 'Rhode Island': 'RI', 'South Carolina': 'SC', 'South Dakota': 'SD', 'Tennessee': 'TN', 'Texas': 'TX', 'Utah': 'UT', 'Vermont': 'VT','Virgin Islands': 'VI', 'Virginia': 'VA', 'Washington': 'WA', 'West Virginia': 'WV', 'Wisconsin': 'WI', 'Wyoming': 'WY' } violence_data['state code'] = violence_data['state'].apply(lambda x : states[x]) ViolenceChart = violence_data.groupby('state code')[['n_killed', 'n_guns_involved']].sum().sort_values(by = "n_killed",ascending = False).reset_index().head(25) ViolenceChart.plot.pie(y="n_guns_involved")
fig = px.choropleth(violence_data.groupby('state code')['n_killed'].sum().reset_index(), locations='state code', locationmode="USA-states", color='n_killed', scope="usa", color_continuous_scale="Viridis") fig.show()
If the shooter is an adult, there will be a greater amount of weapons used.
gun_data_edited = pd.read_csv("gun-violence-data.csv") columns_drop_two = ["incident_url", "source_url", "incident_url_fields_missing", "address", "participant_status", "sources", "latitude", "longitude", "state_house_district", "state_senate_district", "incident_id", "participant_name", "notes","location_description","congressional_district"] gun_data_edited.drop(columns_drop_two, axis=1, inplace = True) #gun_data.dropna(inplace=True) gun_data_edited.reset_index(drop=True, inplace=True)
gun_data_edited['Adult'] = 0 gun_data_edited['Teen'] = 0 gun_data_edited['Child'] = 0 gun_data_edited['Male'] = 0 gun_data_edited['Female'] = 0 def age_Sorter_Two(Row): temp = Row['participant_age_group'] if str(temp) == "nan": return Row #print(temp) age_group = temp.split("||") if len(age_group) == 1: age_group = age_group[0].split("|") for age in age_group: a = age.split("::") if len(a) == 1: a = a[0].split(":") if a[1] == "Adult 18+": Row['Adult'] += 1 elif a[1] == "Teen 12-17": Row['Teen'] += 1 else: Row['Child'] += 1 for col in gun_data_edited.columns: if col == 'participant_age_group': columns_drop = 'participant_age_group' return Row def gender_Sorter_Two(Row): temp = Row['participant_gender'] if str(temp) == "nan": return Row gender = temp.split("||") if len(gender) == 1: gender = gender[0].split("|") for gen in gender: g = gen.split("::") if len(g) == 1: g = g[0].split(":") if g[1] == "Male": Row['Male'] += 1 elif g[1] == "Female": Row['Female'] += 1 for col in gun_data_edited.columns: if col == 'participant_gender': columns_drop = 'participant_gender' return Row gun_data_edited = gun_data_edited.apply(age_Sorter_Two, axis = 1) gun_data_edited = gun_data_edited.apply(gender_Sorter_Two, axis = 1) gun_data_edited.head()
| date | state | city_or_county | n_killed | n_injured | gun_stolen | gun_type | incident_characteristics | n_guns_involved | participant_age | participant_age_group | participant_gender | participant_relationship | participant_type | Adult | Teen | Child | Male | Female | |
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| 0 | 2013-01-01 | Pennsylvania | Mckeesport | 0 | 4 | NaN | NaN | Shot - Wounded/Injured||Mass Shooting (4+ vict... | NaN | 0::20 | 0::Adult 18+||1::Adult 18+||2::Adult 18+||3::A... | 0::Male||1::Male||3::Male||4::Female | NaN | 0::Victim||1::Victim||2::Victim||3::Victim||4:... | 5 | 0 | 0 | 3 | 1 |
| 1 | 2013-01-01 | California | Hawthorne | 1 | 3 | NaN | NaN | Shot - Wounded/Injured||Shot - Dead (murder, a... | NaN | 0::20 | 0::Adult 18+||1::Adult 18+||2::Adult 18+||3::A... | 0::Male | NaN | 0::Victim||1::Victim||2::Victim||3::Victim||4:... | 4 | 0 | 0 | 1 | 0 |
| 2 | 2013-01-01 | Ohio | Lorain | 1 | 3 | 0::Unknown||1::Unknown | 0::Unknown||1::Unknown | Shot - Wounded/Injured||Shot - Dead (murder, a... | 2.0 | 0::25||1::31||2::33||3::34||4::33 | 0::Adult 18+||1::Adult 18+||2::Adult 18+||3::A... | 0::Male||1::Male||2::Male||3::Male||4::Male | NaN | 0::Subject-Suspect||1::Subject-Suspect||2::Vic... | 5 | 0 | 0 | 5 | 0 |
| 3 | 2013-01-05 | Colorado | Aurora | 4 | 0 | NaN | NaN | Shot - Dead (murder, accidental, suicide)||Off... | NaN | 0::29||1::33||2::56||3::33 | 0::Adult 18+||1::Adult 18+||2::Adult 18+||3::A... | 0::Female||1::Male||2::Male||3::Male | NaN | 0::Victim||1::Victim||2::Victim||3::Subject-Su... | 4 | 0 | 0 | 3 | 1 |
| 4 | 2013-01-07 | North Carolina | Greensboro | 2 | 2 | 0::Unknown||1::Unknown | 0::Handgun||1::Handgun | Shot - Wounded/Injured||Shot - Dead (murder, a... | 2.0 | 0::18||1::46||2::14||3::47 | 0::Adult 18+||1::Adult 18+||2::Teen 12-17||3::... | 0::Female||1::Male||2::Male||3::Female | 3::Family | 0::Victim||1::Victim||2::Victim||3::Subject-Su... | 3 | 1 | 0 | 2 | 2 |
#adultNumOfGun = px.scatter(gun_data_edited, x="Adult", y="n_guns_involved") #adultNumOfGun.show()
#Create a histogram of another column of your choice below. gun_data_edited.hist('Adult')
---------------------------------------------------------------------------
NameError Traceback (most recent call last)
Input In [10], in <cell line: 2>()
1 #Create a histogram of another column of your choice below.
----> 2 gun_data_edited.hist('Adult')
NameError: name 'gun_data_edited' is not defined
gun_data_edited.head(30)
| date | state | city_or_county | n_killed | n_injured | gun_stolen | gun_type | incident_characteristics | n_guns_involved | participant_age | participant_age_group | participant_gender | participant_relationship | participant_type | Adult | Teen | Child | Male | Female | |
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| 0 | 2013-01-01 | Pennsylvania | Mckeesport | 0 | 4 | NaN | NaN | Shot - Wounded/Injured||Mass Shooting (4+ vict... | NaN | 0::20 | 0::Adult 18+||1::Adult 18+||2::Adult 18+||3::A... | 0::Male||1::Male||3::Male||4::Female | NaN | 0::Victim||1::Victim||2::Victim||3::Victim||4:... | 5 | 0 | 0 | 3 | 1 |
| 1 | 2013-01-01 | California | Hawthorne | 1 | 3 | NaN | NaN | Shot - Wounded/Injured||Shot - Dead (murder, a... | NaN | 0::20 | 0::Adult 18+||1::Adult 18+||2::Adult 18+||3::A... | 0::Male | NaN | 0::Victim||1::Victim||2::Victim||3::Victim||4:... | 4 | 0 | 0 | 1 | 0 |
| 2 | 2013-01-01 | Ohio | Lorain | 1 | 3 | 0::Unknown||1::Unknown | 0::Unknown||1::Unknown | Shot - Wounded/Injured||Shot - Dead (murder, a... | 2.0 | 0::25||1::31||2::33||3::34||4::33 | 0::Adult 18+||1::Adult 18+||2::Adult 18+||3::A... | 0::Male||1::Male||2::Male||3::Male||4::Male | NaN | 0::Subject-Suspect||1::Subject-Suspect||2::Vic... | 5 | 0 | 0 | 5 | 0 |
| 3 | 2013-01-05 | Colorado | Aurora | 4 | 0 | NaN | NaN | Shot - Dead (murder, accidental, suicide)||Off... | NaN | 0::29||1::33||2::56||3::33 | 0::Adult 18+||1::Adult 18+||2::Adult 18+||3::A... | 0::Female||1::Male||2::Male||3::Male | NaN | 0::Victim||1::Victim||2::Victim||3::Subject-Su... | 4 | 0 | 0 | 3 | 1 |
| 4 | 2013-01-07 | North Carolina | Greensboro | 2 | 2 | 0::Unknown||1::Unknown | 0::Handgun||1::Handgun | Shot - Wounded/Injured||Shot - Dead (murder, a... | 2.0 | 0::18||1::46||2::14||3::47 | 0::Adult 18+||1::Adult 18+||2::Teen 12-17||3::... | 0::Female||1::Male||2::Male||3::Female | 3::Family | 0::Victim||1::Victim||2::Victim||3::Subject-Su... | 3 | 1 | 0 | 2 | 2 |
| 5 | 2013-01-07 | Oklahoma | Tulsa | 4 | 0 | NaN | NaN | Shot - Dead (murder, accidental, suicide)||Hom... | NaN | 0::23||1::23||2::33||3::55 | 0::Adult 18+||1::Adult 18+||2::Adult 18+||3::A... | 0::Female||1::Female||2::Female||3::Female||4:... | NaN | 0::Victim||1::Victim||2::Victim||3::Victim||4:... | 6 | 0 | 0 | 2 | 4 |
| 6 | 2013-01-19 | New Mexico | Albuquerque | 5 | 0 | 0::Unknown||1::Unknown | 0::22 LR||1::223 Rem [AR-15] | Shot - Dead (murder, accidental, suicide)||Mas... | 2.0 | 0::51||1::40||2::9||3::5||4::2||5::15 | 0::Adult 18+||1::Adult 18+||2::Child 0-11||3::... | 0::Male||1::Female||2::Male||3::Female||4::Fem... | 5::Family | 0::Victim||1::Victim||2::Victim||3::Victim||4:... | 2 | 1 | 3 | 3 | 3 |
| 7 | 2013-01-21 | Louisiana | New Orleans | 0 | 5 | NaN | NaN | Shot - Wounded/Injured||Drive-by (car to stree... | NaN | NaN | NaN | 0::Male||1::Male||2::Male||3::Male||4::Male | NaN | 0::Victim||1::Victim||2::Victim||3::Victim||4:... | 0 | 0 | 0 | 5 | 0 |
| 8 | 2013-01-21 | California | Brentwood | 0 | 4 | NaN | NaN | Shot - Wounded/Injured||Drive-by (car to stree... | NaN | NaN | 0::Teen 12-17||1::Teen 12-17||2::Teen 12-17||4... | 0::Male||1::Male||2::Male||3::Male||4::Male | NaN | 0::Victim||1::Victim||2::Victim||3::Victim||4:... | 1 | 3 | 0 | 5 | 0 |
| 9 | 2013-01-23 | Maryland | Baltimore | 1 | 6 | NaN | NaN | Shot - Wounded/Injured||Shot - Dead (murder, a... | NaN | 0::15 | 0::Teen 12-17||1::Adult 18+||2::Adult 18+||3::... | 0::Male | NaN | 0::Victim||1::Victim||2::Victim||3::Victim||4:... | 6 | 1 | 0 | 1 | 0 |
| 10 | 2013-01-23 | Tennessee | Chattanooga | 1 | 3 | 0::Unknown | 0::Unknown | Shot - Wounded/Injured||Shot - Dead (murder, a... | 1.0 | 0::19 | 0::Adult 18+ | 0::Male||1::Male||2::Male||3::Male | NaN | 0::Victim||1::Victim||2::Victim||3::Victim||4:... | 1 | 0 | 0 | 4 | 0 |
| 11 | 2013-01-25 | Missouri | Saint Louis | 1 | 3 | 0::Unknown | 0::Unknown | Shot - Wounded/Injured||Shot - Dead (murder, a... | 1.0 | 0::28 | 0::Adult 18+ | 0::Male | NaN | 0::Victim||1::Victim||2::Victim||3::Victim||4:... | 1 | 0 | 0 | 1 | 0 |
| 12 | 2013-01-26 | Louisiana | Charenton | 2 | 3 | 0::Unknown | 0::Shotgun | Shot - Wounded/Injured||Shot - Dead (murder, a... | 1.0 | 3::78||4::48 | 0::Adult 18+||1::Adult 18+||2::Adult 18+||3::A... | 0::Male||1::Male||2::Male||3::Male||4::Male | NaN | 0::Victim||1::Victim||2::Victim||3::Victim||4:... | 5 | 0 | 0 | 5 | 0 |
| 13 | 2013-01-26 | District of Columbia | Washington | 0 | 5 | 0::Unknown | 0::Handgun | Shot - Wounded/Injured||Mass Shooting (4+ vict... | 1.0 | NaN | 0::Adult 18+||1::Adult 18+||2::Adult 18+||3::A... | 0::Female||1::Female||2::Male||3::Male||4::Mal... | NaN | 0::Victim||1::Victim||2::Victim||3::Victim||4:... | 6 | 0 | 0 | 4 | 2 |
| 14 | 2013-01-26 | Ohio | Springfield | 1 | 3 | NaN | NaN | Shot - Wounded/Injured||Shot - Dead (murder, a... | NaN | 0::34||1::28||2::23||3::29||4::29 | 0::Adult 18+||1::Adult 18+||2::Adult 18+||3::A... | 0::Male||1::Male||2::Male||3::Male||4::Male | NaN | 0::Victim||1::Victim||2::Victim||3::Victim||4:... | 5 | 0 | 0 | 5 | 0 |
| 15 | 2013-02-02 | Tennessee | Memphis | 0 | 5 | 0::Unknown | 0::Handgun | Shot - Wounded/Injured||Mass Shooting (4+ vict... | 1.0 | 5::24 | 0::Adult 18+||1::Adult 18+||2::Adult 18+||4::A... | 0::Female||1::Female||2::Female||3::Female||4:... | NaN | 0::Victim||1::Victim||2::Victim||3::Victim||4:... | 5 | 0 | 0 | 0 | 6 |
| 16 | 2013-02-03 | California | Yuba (county) | 1 | 3 | 0::Unknown | 0::9mm | Shot - Wounded/Injured||Shot - Dead (murder, a... | 1.0 | 0::20||4::25||5::18||6::19 | 0::Adult 18+||1::Adult 18+||2::Adult 18+||3::A... | 0::Male||1::Male||2::Female||4::Male||5::Male|... | 4::Drive by - Random victims||5::Drive by - Ra... | 0::Victim||1::Victim||2::Victim||3::Victim||4:... | 7 | 0 | 0 | 5 | 1 |
| 17 | 2013-02-07 | Illinois | Chicago | 0 | 4 | NaN | NaN | Shot - Wounded/Injured||Drive-by (car to stree... | NaN | 0::18||1::41||2::28||3::28 | 0::Adult 18+||1::Adult 18+||2::Adult 18+||3::A... | 0::Male||1::Male||2::Male||3::Male | NaN | 0::Victim||1::Victim||2::Victim||3::Victim||4:... | 6 | 0 | 0 | 4 | 0 |
| 18 | 2013-02-09 | Louisiana | New Orleans | 0 | 4 | 0::Unknown | 0::Handgun | Shot - Wounded/Injured||Mass Shooting (4+ vict... | 1.0 | 0::18||1::22||2::21||3::29||4::19||5::22||6::23 | 0::Adult 18+||1::Adult 18+||2::Adult 18+||3::A... | 0::Male||1::Female||2::Female||3::Male||4::Mal... | NaN | 0::Victim||1::Victim||2::Victim||3::Victim||4:... | 7 | 0 | 0 | 5 | 2 |
| 19 | 2013-02-11 | California | Vallejo | 1 | 4 | NaN | NaN | Shot - Wounded/Injured||Shot - Dead (murder, a... | NaN | 0::22 | 0::Adult 18+||1::Adult 18+||2::Adult 18+||3::A... | 0::Male||1::Male||2::Male||3::Female||4::Female | NaN | 0::Victim||1::Victim||2::Victim||3::Victim||4:... | 5 | 0 | 0 | 3 | 2 |
| 20 | 2013-02-11 | Delaware | Wilmington | 3 | 2 | 0::Unknown | 0::45 Auto | Shot - Wounded/Injured||Shot - Dead (murder, a... | 1.0 | 1::39||4::68 | 0::Adult 18+||1::Adult 18+||2::Adult 18+||3::A... | 0::Female||1::Female||2::Male||3::Male||4::Male | NaN | 0::Victim||1::Victim||2::Victim||3::Victim||4:... | 5 | 0 | 0 | 3 | 2 |
| 21 | 2013-02-12 | Utah | Midvale | 4 | 1 | NaN | NaN | Shot - Wounded/Injured||Shot - Dead (murder, a... | NaN | 0::35||1::34||2::26||4::25 | 0::Adult 18+||1::Adult 18+||2::Adult 18+||3::A... | 0::Male||1::Male||2::Male||3::Female||4::Male|... | NaN | 0::Victim||1::Victim||2::Victim||3::Victim||4:... | 6 | 0 | 0 | 5 | 1 |
| 22 | 2013-02-19 | California | Orange (county) | 4 | 3 | 0::Unknown | 0::12 gauge | Shot - Wounded/Injured||Shot - Dead (murder, a... | 1.0 | 0::20||4::69||5::27||6::20 | 0::Adult 18+||1::Adult 18+||2::Adult 18+||3::A... | 0::Female||4::Male||5::Male||6::Male | NaN | 0::Victim||1::Victim||2::Victim||3::Victim||4:... | 7 | 0 | 0 | 3 | 1 |
| 23 | 2013-02-21 | Oklahoma | Tulsa | 1 | 3 | NaN | NaN | Shot - Wounded/Injured||Shot - Dead (murder, a... | NaN | 0::18||1::18||2::18||3::19||4::41 | 0::Adult 18+||1::Adult 18+||2::Adult 18+||3::A... | 0::Male||1::Male||2::Male||3::Female||4::Male | NaN | 0::Victim||1::Victim||2::Victim||3::Victim||4:... | 5 | 0 | 0 | 4 | 1 |
| 24 | 2013-02-22 | Michigan | Grand Rapids | 0 | 4 | NaN | NaN | Shot - Wounded/Injured||Mass Shooting (4+ vict... | NaN | NaN | 0::Adult 18+||1::Adult 18+ | 0::Male||1::Male||2::Male||3::Male||4::Female | NaN | 0::Subject-Suspect||1::Victim||2::Victim||3::V... | 2 | 0 | 0 | 4 | 1 |
| 25 | 2013-02-23 | California | Lancaster | 0 | 4 | NaN | NaN | Shot - Wounded/Injured||Mass Shooting (4+ vict... | NaN | 0::22||1::26||2::29||3::37 | 0::Adult 18+||1::Adult 18+||2::Adult 18+||3::A... | 0::Male||1::Male||2::Male||3::Male | NaN | 0::Victim||1::Victim||2::Victim||3::Victim||4:... | 4 | 0 | 0 | 4 | 0 |
| 26 | 2013-02-24 | Georgia | Macon | 0 | 8 | NaN | NaN | Shot - Wounded/Injured||Mass Shooting (4+ vict... | NaN | 8::29 | 0::Adult 18+||2::Adult 18+||3::Adult 18+||4::A... | 0::Male||1::Male||2::Male||3::Male||4::Male||5... | NaN | 0::Victim||1::Victim||2::Victim||3::Victim||4:... | 8 | 0 | 0 | 7 | 2 |
| 27 | 2013-03-02 | Louisiana | Shreveport | 1 | 3 | NaN | NaN | Shot - Wounded/Injured||Shot - Dead (murder, a... | NaN | 0::18||1::18||2::18||3::19||4::15||5::17 | 0::Adult 18+||1::Adult 18+||2::Adult 18+||3::A... | 0::Male||1::Male||2::Male||3::Male||4::Male||5... | NaN | 0::Victim||1::Victim||2::Victim||3::Victim||4:... | 4 | 2 | 0 | 6 | 0 |
| 28 | 2013-03-03 | Georgia | Moultrie | 2 | 2 | 0::Unknown | 0::7.62 [AK-47] | Shot - Wounded/Injured||Shot - Dead (murder, a... | 1.0 | 0::50||1::42||4::24||5::25 | 0::Adult 18+||1::Adult 18+||2::Adult 18+||3::A... | 0::Male||1::Male||2::Female||3::Male||4::Male|... | NaN | 0::Victim||1::Victim||2::Victim||3::Victim||4:... | 6 | 0 | 0 | 5 | 1 |
| 29 | 2013-03-03 | Michigan | Saginaw (county) | 0 | 4 | NaN | NaN | Shot - Wounded/Injured||Mass Shooting (4+ vict... | NaN | 0::23||1::34||2::17||3::25 | 0::Adult 18+||1::Adult 18+||2::Teen 12-17||3::... | 0::Male||1::Male||2::Female||3::Female | NaN | 0::Victim||1::Victim||2::Victim||3::Victim | 3 | 1 | 0 | 2 | 2 |
tempTwo = row['n_guns_involved'] for if str(TempTwo) == "nan": pass else: gun_data_edited['n_guns_involved'].astype(int) gun_data_edited.head()
---------------------------------------------------------------------------
IntCastingNaNError Traceback (most recent call last)
Input In [195], in <cell line: 1>()
----> 1 gun_data_edited['n_guns_involved'].astype(int)
3 gun_data_edited.head()
File ~/miniconda3/envs/ds_env/lib/python3.8/site-packages/pandas/core/generic.py:5912, in NDFrame.astype(self, dtype, copy, errors)
5905 results = [
5906 self.iloc[:, i].astype(dtype, copy=copy)
5907 for i in range(len(self.columns))
5908 ]
5910 else:
5911 # else, only a single dtype is given
-> 5912 new_data = self._mgr.astype(dtype=dtype, copy=copy, errors=errors)
5913 return self._constructor(new_data).__finalize__(self, method="astype")
5915 # GH 33113: handle empty frame or series
File ~/miniconda3/envs/ds_env/lib/python3.8/site-packages/pandas/core/internals/managers.py:419, in BaseBlockManager.astype(self, dtype, copy, errors)
418 def astype(self: T, dtype, copy: bool = False, errors: str = "raise") -> T:
--> 419 return self.apply("astype", dtype=dtype, copy=copy, errors=errors)
File ~/miniconda3/envs/ds_env/lib/python3.8/site-packages/pandas/core/internals/managers.py:304, in BaseBlockManager.apply(self, f, align_keys, ignore_failures, **kwargs)
302 applied = b.apply(f, **kwargs)
303 else:
--> 304 applied = getattr(b, f)(**kwargs)
305 except (TypeError, NotImplementedError):
306 if not ignore_failures:
File ~/miniconda3/envs/ds_env/lib/python3.8/site-packages/pandas/core/internals/blocks.py:580, in Block.astype(self, dtype, copy, errors)
562 """
563 Coerce to the new dtype.
564
(...)
576 Block
577 """
578 values = self.values
--> 580 new_values = astype_array_safe(values, dtype, copy=copy, errors=errors)
582 new_values = maybe_coerce_values(new_values)
583 newb = self.make_block(new_values)
File ~/miniconda3/envs/ds_env/lib/python3.8/site-packages/pandas/core/dtypes/cast.py:1292, in astype_array_safe(values, dtype, copy, errors)
1289 dtype = dtype.numpy_dtype
1291 try:
-> 1292 new_values = astype_array(values, dtype, copy=copy)
1293 except (ValueError, TypeError):
1294 # e.g. astype_nansafe can fail on object-dtype of strings
1295 # trying to convert to float
1296 if errors == "ignore":
File ~/miniconda3/envs/ds_env/lib/python3.8/site-packages/pandas/core/dtypes/cast.py:1237, in astype_array(values, dtype, copy)
1234 values = values.astype(dtype, copy=copy)
1236 else:
-> 1237 values = astype_nansafe(values, dtype, copy=copy)
1239 # in pandas we don't store numpy str dtypes, so convert to object
1240 if isinstance(dtype, np.dtype) and issubclass(values.dtype.type, str):
File ~/miniconda3/envs/ds_env/lib/python3.8/site-packages/pandas/core/dtypes/cast.py:1148, in astype_nansafe(arr, dtype, copy, skipna)
1145 raise TypeError(f"cannot astype a timedelta from [{arr.dtype}] to [{dtype}]")
1147 elif np.issubdtype(arr.dtype, np.floating) and np.issubdtype(dtype, np.integer):
-> 1148 return astype_float_to_int_nansafe(arr, dtype, copy)
1150 elif is_object_dtype(arr.dtype):
1151
1152 # work around NumPy brokenness, #1987
1153 if np.issubdtype(dtype.type, np.integer):
File ~/miniconda3/envs/ds_env/lib/python3.8/site-packages/pandas/core/dtypes/cast.py:1193, in astype_float_to_int_nansafe(values, dtype, copy)
1189 """
1190 astype with a check preventing converting NaN to an meaningless integer value.
1191 """
1192 if not np.isfinite(values).all():
-> 1193 raise IntCastingNaNError(
1194 "Cannot convert non-finite values (NA or inf) to integer"
1195 )
1196 return values.astype(dtype, copy=copy)
IntCastingNaNError: Cannot convert non-finite values (NA or inf) to integer
#The correlation between the state the shooting happend in and the amount of injured people. (Kathryn)
gun_info = pd.read_csv("gun-violence-data.csv") columns_drop = ["incident_url", "source_url", "incident_url_fields_missing", "address", "participant_status", "sources", "latitude", "longitude", "state_house_district", "state_senate_district", "incident_id", "participant_name", "notes","location_description","congressional_district"] gun_info.drop(columns_drop, axis=1, inplace = True) gun_info.reset_index(drop=True, inplace=True) gun_info.head()
| date | state | city_or_county | n_killed | n_injured | gun_stolen | gun_type | incident_characteristics | n_guns_involved | participant_age | participant_age_group | participant_gender | participant_relationship | participant_type | |
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| 0 | 2013-01-01 | Pennsylvania | Mckeesport | 0 | 4 | NaN | NaN | Shot - Wounded/Injured||Mass Shooting (4+ vict... | NaN | 0::20 | 0::Adult 18+||1::Adult 18+||2::Adult 18+||3::A... | 0::Male||1::Male||3::Male||4::Female | NaN | 0::Victim||1::Victim||2::Victim||3::Victim||4:... |
| 1 | 2013-01-01 | California | Hawthorne | 1 | 3 | NaN | NaN | Shot - Wounded/Injured||Shot - Dead (murder, a... | NaN | 0::20 | 0::Adult 18+||1::Adult 18+||2::Adult 18+||3::A... | 0::Male | NaN | 0::Victim||1::Victim||2::Victim||3::Victim||4:... |
| 2 | 2013-01-01 | Ohio | Lorain | 1 | 3 | 0::Unknown||1::Unknown | 0::Unknown||1::Unknown | Shot - Wounded/Injured||Shot - Dead (murder, a... | 2.0 | 0::25||1::31||2::33||3::34||4::33 | 0::Adult 18+||1::Adult 18+||2::Adult 18+||3::A... | 0::Male||1::Male||2::Male||3::Male||4::Male | NaN | 0::Subject-Suspect||1::Subject-Suspect||2::Vic... |
| 3 | 2013-01-05 | Colorado | Aurora | 4 | 0 | NaN | NaN | Shot - Dead (murder, accidental, suicide)||Off... | NaN | 0::29||1::33||2::56||3::33 | 0::Adult 18+||1::Adult 18+||2::Adult 18+||3::A... | 0::Female||1::Male||2::Male||3::Male | NaN | 0::Victim||1::Victim||2::Victim||3::Subject-Su... |
| 4 | 2013-01-07 | North Carolina | Greensboro | 2 | 2 | 0::Unknown||1::Unknown | 0::Handgun||1::Handgun | Shot - Wounded/Injured||Shot - Dead (murder, a... | 2.0 | 0::18||1::46||2::14||3::47 | 0::Adult 18+||1::Adult 18+||2::Teen 12-17||3::... | 0::Female||1::Male||2::Male||3::Female | 3::Family | 0::Victim||1::Victim||2::Victim||3::Subject-Su... |
gun_info.info()
fig = px.scatter(gun_info, x = "state", y = "n_killed") fig.show()
fig = px.scatter(gun_info, x = "state", y = "n_injured") fig.show()
When a teen or adult is able to posses a firearm without owning it, it will result in a shooting.(Logan)
gun_relation = pd.read_csv("gun-violence-data.csv") columns_drop = ["incident_url", "source_url", "incident_url_fields_missing", "address", "participant_status", "sources", "latitude", "longitude", "state_house_district", "state_senate_district", "incident_id", "participant_name", "notes","location_description","congressional_district"] gun_relation.drop(columns_drop, axis=1, inplace = True) #gun_relation.dropna(inplace=True) gun_relation.reset_index(drop=True, inplace=True)
gun_relation['Adult'] = 0 gun_relation['Teen'] = 0 gun_relation['Child'] = 0 def age_Sorter2(Row): temp = Row['participant_age_group'] if str(temp) == "nan": return Row age_group = temp.split("||") if len(age_group) == 1: age_group = age_group[0].split("|") for age in age_group: a = age.split("::") if len(a) == 1: a = a[0].split(":") if a[1] == "Adult 18+": Row['Adult'] += 1 elif a[1] == "Teen 12-17": Row['Teen'] += 1 else: Row['Child'] += 1 for col in gun_relation.columns: if col == 'participant_age_group': columns_drop = 'participant_age_group' return Row gun_relation = gun_relation.apply(age_Sorter2, axis = 1)
gun_relation.head()
| date | state | city_or_county | n_killed | n_injured | gun_stolen | gun_type | incident_characteristics | n_guns_involved | participant_age | participant_age_group | participant_gender | participant_relationship | participant_type | Adult | Teen | Child | |
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| 0 | 2013-01-01 | Pennsylvania | Mckeesport | 0 | 4 | NaN | NaN | Shot - Wounded/Injured||Mass Shooting (4+ vict... | NaN | 0::20 | 0::Adult 18+||1::Adult 18+||2::Adult 18+||3::A... | 0::Male||1::Male||3::Male||4::Female | NaN | 0::Victim||1::Victim||2::Victim||3::Victim||4:... | 5 | 0 | 0 |
| 1 | 2013-01-01 | California | Hawthorne | 1 | 3 | NaN | NaN | Shot - Wounded/Injured||Shot - Dead (murder, a... | NaN | 0::20 | 0::Adult 18+||1::Adult 18+||2::Adult 18+||3::A... | 0::Male | NaN | 0::Victim||1::Victim||2::Victim||3::Victim||4:... | 4 | 0 | 0 |
| 2 | 2013-01-01 | Ohio | Lorain | 1 | 3 | 0::Unknown||1::Unknown | 0::Unknown||1::Unknown | Shot - Wounded/Injured||Shot - Dead (murder, a... | 2.0 | 0::25||1::31||2::33||3::34||4::33 | 0::Adult 18+||1::Adult 18+||2::Adult 18+||3::A... | 0::Male||1::Male||2::Male||3::Male||4::Male | NaN | 0::Subject-Suspect||1::Subject-Suspect||2::Vic... | 5 | 0 | 0 |
| 3 | 2013-01-05 | Colorado | Aurora | 4 | 0 | NaN | NaN | Shot - Dead (murder, accidental, suicide)||Off... | NaN | 0::29||1::33||2::56||3::33 | 0::Adult 18+||1::Adult 18+||2::Adult 18+||3::A... | 0::Female||1::Male||2::Male||3::Male | NaN | 0::Victim||1::Victim||2::Victim||3::Subject-Su... | 4 | 0 | 0 |
| 4 | 2013-01-07 | North Carolina | Greensboro | 2 | 2 | 0::Unknown||1::Unknown | 0::Handgun||1::Handgun | Shot - Wounded/Injured||Shot - Dead (murder, a... | 2.0 | 0::18||1::46||2::14||3::47 | 0::Adult 18+||1::Adult 18+||2::Teen 12-17||3::... | 0::Female||1::Male||2::Male||3::Female | 3::Family | 0::Victim||1::Victim||2::Victim||3::Subject-Su... | 3 | 1 | 0 |
import plotly.express as px teen_shooting = px.scatter(gun_relation, x='n_killed', y='Teen') teen_shooting.show()
import plotly.express as px teen_shooting_injury = px.scatter(gun_relation, x='n_injured', y='Teen') teen_shooting_injury.show()
gun_relation['Adult'].unique()
import plotly.express as px adult_shooting_injury = px.bar(gun_relation, x='n_injured', y='Adult') adult_shooting_injury.show()
import plotly.express as px adult_shooting = px.scatter(gun_relation, x='n_killed', y='Adult') adult_shooting.show()
plt.style.use("fivethirtyeight") plt.figure(figsize=(30, 10)) plt.xlabel("Date") plt.ylabel("Values") plt.title("Sample Time Series Plot") plt.plot(gun_data["n_killed"])
period_length = 5 start_year = 2013 end_year = 2018 df = df[(df['YEAR'] >= start) & (df['YEAR'] <= 2019)]